// 隆回县
import district_430524 from './district/district_430524.json'
import town_430524 from './district/town_430524.json'
import fxq_430524 from './district/fxq_430524.json'
// 桂东县
import district_431027 from './district/district_431027.json'
import town_431027 from './district/town_431027.json'
// 东安县
import district_431122 from './district/district_431122.json'
import town_431122 from './district/town_431122.json'
import fxq_431122 from './district/fxq_431122.json'
// 资兴市
import district_431081 from './district/district_431081.json'
import town_431081 from './district/town_431081.json'
// 涟源市
import district_431382 from './district/district_431382.json'
import town_431382 from './district/town_431382.json'
import fxq_431382 from './district/fxq_431382.json'
// 创建数据映射对象，避免使用eval
const districtDataMap = {
    // 隆回县
    district_430524,
    town_430524,
    fxq_430524,
    // 桂东县
    district_431027,
    town_431027,
    // 东安县
    district_431122,
    town_431122,
    fxq_431122,
    // 资兴市
    district_431081,
    town_431081,
    // 涟源市
    district_431382,
    town_431382,
    fxq_431382,
}

/**
 * 根据类型和行政区划代码获取地区数据
 * @param {string} type - 数据类型 (district/town/fxq)
 * @param {string} adcode - 行政区划代码
 * @returns {Object} 包含地理数据和中心点坐标的对象
 */
function getDistrictByCode(type, adcode) {
    const key = `${type}_${adcode}`
    const geojson = districtDataMap[key]

    if (!geojson) {
        console.warn(`未找到对应的地区数据: ${key}`)
        return null
    }
    const length = geojson.features?.length || 0
    let centerx = 111
    let centery = 30

    // 获取中心点坐标
    if (length === 1 && geojson.features[0]?.properties?.centroid) {
        try {
            const center = geojson.features[0].properties.centroid
            const centerObj = JSON.parse(center)
            if (Array.isArray(centerObj) && centerObj.length >= 2) {
                centerx = centerObj[0]
                centery = centerObj[1]
            }
        } catch (error) {
            console.error('解析中心点坐标失败:', error)
        }
    }

    return {
        data: geojson,
        centerx,
        centery,
    }
}

/**
 * 根据行政区划代码获取区县级数据
 * @param {string} adcode - 行政区划代码
 * @returns {Object|null} 地区数据对象，包含地理数据和中心点坐标
 */
export const getCityCode = (adcode = null) =>
    getDistrictByCode('district', adcode)

/**
 * 根据行政区划代码获取乡镇级数据
 * @param {string} adcode - 行政区划代码
 * @returns {Object|null} 地区数据对象，包含地理数据和中心点坐标
 */
export const getTownByCode = (adcode = null) =>
    getDistrictByCode('town', adcode)

/**
 * 根据行政区划代码获取风险区数据
 * @param {string} adcode - 行政区划代码
 * @returns {Object|null} 地区数据对象，包含地理数据和中心点坐标
 */
export const getFxqByCode = (adcode = null) => getDistrictByCode('fxq', adcode)
